package au.com.acpfg.misc.uniprot;
import java.io.IOException;
import java.io.Serializable;
import java.text.DateFormat;
import java.util.Date;
/**
* Records the essential state for a uniprot record (at this time only retrieval tasks are cache but this may change in future)
*
* @author andrew.cassin
*
*/
public class CacheableUniProtRecord implements Serializable {
/**
* for Serializable
*/
private static final long serialVersionUID = 7136109438552699967L;
public enum UniProtDatabase { UNIPROT_KB, UNIPARC, UNIREF, UNKNOWN };
private UniProtDatabase m_db;
private String m_accsn; // primary key
private String m_xml; // complete (usually well-formed, but not guaranteed) XML
public CacheableUniProtRecord(UniProtDatabase db, String accsn, String xml) {
m_db = db;
m_accsn = accsn;
m_xml = xml;
}
public final static String makeKey(UniProtDatabase db, String accsn) {
return ""+db+"-"+accsn;
}
public final String getKey() {
return makeKey(m_db, m_accsn);
}
public final UniProtDatabase getUniProtDB() {
return m_db;
}
public final String getAccession() {
return m_accsn;
}
public final String getXML() {
return m_xml;
}
/********************************* SERIALIZABLE INTERFACE METHODS ******************************/
protected void writeObject(java.io.ObjectOutputStream out) throws IOException {
out.writeUTF(m_db.toString());
out.writeUTF(m_accsn);
out.writeUTF(m_xml);
}
protected void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException {
String enum_const = in.readUTF();
m_db = UniProtDatabase.valueOf(enum_const);
m_accsn = in.readUTF();
m_xml = in.readUTF();
}
}